事件流描述的是从页面中接收事件的顺序;本文主要将以下知识点
1.DOM0级事件
2.DOM2级事件流的3个阶段
3.IE8及更老版本的事件流

DOM0级事件

DOM0级事件仅持支DOM内部实现的事件,通过给事件对应的属性赋值来添加事件监听,如:

document.body.onclick = function (event) {
    console.log(event, '点击body')
}

移除事件监听通过给对应属性赋值null或者undefined即可;一个事件仅可添加(赋值)一个监听方法,重复添加(赋值)会覆盖前面的监听

DOM2级事件

DOM2级事件规定事件流有事件捕获阶段(capture phase)、处于目标阶段(target phase)和事件冒泡阶段(bubbling phase)三个阶段;
捕获阶段:事件对象通过目标的祖先从窗口传播到目标的父对象。这个阶段也被称为捕获阶段。

目标阶段:事件对象(event object)到达事件对象的事件目标(event target)。这个阶段也被称为at-target阶段。如果事件类型指示事件不冒泡,则事件对象将在完成此阶段之后停止。

冒泡阶段:事件对象以相反顺序传播目标的祖先,从event target的父对象开始,并以窗口结束。
image.png

DOM2级事件的添加与移除

通过addEventListener方法添加事件,removeEventListener移除事件;DOM2级事件可以添加多个监听方法,同一事件多次添加同一方法时只有第一次生效;目标阶段的执行顺序与useCapture参数无关,先添加的监听先执行

IE8及更老版本的事件流

IE8及更老版本通过attachEvent添加事件监听,通过detachEvent移除事件监听,同一事件可以重复添加同一方法,仅支持冒泡事件流

参考资料

JavaScript高级程序设计(第三版)
DOM-Level-2-Events
DOM-Level-3-Events

前端知识点汇总(点击查看、持续更新)


jm365
48 声望4 粉丝

web前端开发一枚,以简单明了的方式记录技术方法